/**
 * @name createVitePlugins
 * @description 封装plugins数组统一调用
 */
import { PluginOption } from 'vite';
import vue from '@vitejs/plugin-vue';
//支持jsx写法
import vueJsx from '@vitejs/plugin-vue-jsx';

import VitePluginCertificate from 'vite-plugin-mkcert';
//防止setup写法不能设置name 直接<script setup name='xxx'></script>
import vueSetupExtend from 'vite-plugin-vue-setup-extend';
import { ConfigSvgIconsPlugin } from './svgIcons';
import { AutoRegistryComponents } from './component';
import { AutoImportDeps } from './autoImport';
import { ConfigMockPlugin } from './mock';
import { ConfigVisualizerConfig } from './visualizer';
import { ConfigCompressPlugin } from './compress';
import { ConfigPagesPlugin } from './pages';
import { ConfigRestartPlugin } from './restart';
import { ConfigProgressPlugin } from './progress';
// import { ConfigImageminPlugin } from './imagemin';
import { ConfigUnocssPlugin } from './unocss';
import { createHtmlTitle } from './createHtmlTitle';
import { AutoImportUiStyle } from './styleImport';
export function createVitePlugins(isBuild: boolean, mode: string) {
    const vitePlugins: (PluginOption | PluginOption[])[] = [
        // vue支持  通过 $() 解构 $$()转义
        vue({
            reactivityTransform: true
        }),
        // JSX支持
        vueJsx(),
        // setup语法糖组件名支持
        vueSetupExtend(),
        // 提供https证书
        VitePluginCertificate({
            source: 'coding'
        }) as PluginOption
    ];

    // 自动按需引入组件
    vitePlugins.push(AutoRegistryComponents());

    //自动引入ui库方法样式
    vitePlugins.push(AutoImportUiStyle());

    // 自动按需引入依赖
    vitePlugins.push(AutoImportDeps());

    // 自动生成路由
    vitePlugins.push(ConfigPagesPlugin());

    // 开启.gz压缩  rollup-plugin-gzip
    vitePlugins.push(ConfigCompressPlugin());

    // 监听配置文件改动重启
    vitePlugins.push(ConfigRestartPlugin());

    // 构建时显示进度条
    vitePlugins.push(ConfigProgressPlugin());

    // unocss
    vitePlugins.push(ConfigUnocssPlugin());

    // vite-plugin-svg-icons
    vitePlugins.push(ConfigSvgIconsPlugin(isBuild));

    // vite-plugin-mock
    vitePlugins.push(ConfigMockPlugin(isBuild, mode));

    // rollup-plugin-visualizer
    vitePlugins.push(ConfigVisualizerConfig());

    // 图片压缩 部分插件依赖项目在github上 网络不稳定切换淘宝源可能也拉不下来
    //暂时不用
    // vitePlugins.push(ConfigImageminPlugin());

    vitePlugins.push(createHtmlTitle(mode));

    return vitePlugins;
}
